package cn.leaf.calculator.convert;

import cn.leaf.calculator.bean.CalUnitBeanDefinition;
import cn.leaf.calculator.resolver.FormulaBeanDefinitionResolver;
import org.springframework.core.convert.converter.Converter;

import java.lang.reflect.Field;
import java.util.Collection;

/**
 * annotation formula convert
 *
 * @author 李克国
 * @version 1.0.0
 */
public interface AnnotationFormulaConvert<T> extends Converter<T, CalUnitBeanDefinition<T>> {

    /**
     * 获取 bean定义
     *
     * @return class
     */
    Class<T> getDefinition();

    /**
     * 获取 计算项
     *
     * @return collect
     */
    Collection<Field> getCalItemFields();


    /**
     * 获取解析器
     *
     * @return 参数解析器
     */
    FormulaBeanDefinitionResolver<T> getResolver();

    /**
     * 设置参数解析器
     *
     * @param resolver 解析器
     */
    void setResolver(FormulaBeanDefinitionResolver<T> resolver);

}
